package cn.abellflower.flowerhomehandler.home.config;

import cn.abellflower.flowerhomehandler.home.interceptor.CustomerInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import javax.annotation.Resource;

/**
 * @Description
 * @Author gbzdyf@126.com
 * @Date 2021/8/5 下午11:54
 */
@Configuration
public class CustomerMvcConfigurerAdapter implements WebMvcConfigurer {

    @Resource
    private CustomerInterceptor customerInterceptor;

    /**
     * yml 配置
     * spring.mvc.static-path-pattern 访问路径 对应 addResourceHandler
     * 以下 4 个文件夹
     *  META-INF/resources、resources、static、public
     * 各自都放有 a.png
     * 配置了:
     *  1、spring.mvc.static-path-pattern: 默认 localhost:8080/a.jpg 按照优先级
     *      按照优先级找图片
     *  2、spring.mvc.static-path-pattern: /res/** #四个文件夹的访问优先级不变
     *      上面的无法访问
     * 总结: 只更改文件的访问路径，原优先级不变（META-INF/resources > resources > static > public）
     * @param registry
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        //如下配置则能可以访问src/main/resources/res下面的文件
        //如访问res文件夹下的a.jpg，则输入：localhost:28082/res/a.jpg
        //外部目录.addResourceLocations("file:E:/my/")
        registry.addResourceHandler("/res/**") //设置访问路径前缀
                .addResourceLocations("classpath:/res/"); //资源路径
    }

    /**
     * TODO 自定义拦截器 （用于处理权限）
     * @param registry
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        // 自定义拦截器，添加拦截路径和排除拦截路径
        registry.addInterceptor(customerInterceptor).addPathPatterns("/**").excludePathPatterns("/login","/loginIn");
    }
}
